<?php
/**
 * Modelo CRUD de palavras-chave
 * @author Emanuel Melo e Renato Lenz @ PC4 Team
 */
class PC4_Crud_Newsletter_PalavraChave extends PC4_Crud_Abstrato_Rastreado {
	
	/**
	 * Construtor
	 */
	function __construct($tabela = 'palavras_chave') {
		parent::__construct($tabela);
	}
	
	/**
	 * Verifica os campos estão corretos
	 * @param array $campos
	 * @param int $id
	 * @return array com mensagens de erros
	 */
	function valida($campos, $id=0) {
		$erros = array();
		$nome = trim($campos["nome"]);
		
		if (empty($nome)) {
			$erros[] = "&Eacute; necess&aacute;rio informar um nome para a palavra.";
			
		}
		$q = $this->db->get_where($this->tabela, array("nome" => $nome, "id <>" => $id), 1);
			
		if ($q->num_rows() > 0) {
			$erros[] = "A palavra-chave \"" . $nome . "\" j&aacute; existe em nossa base de dados.";
		}
		return $erros;
	}
	
	/**
	 * Captura as palavras chaves de acordo com o cliente
	 * @return Object result set com id e nome da palavra chave
	 */
	function getPalavrasChaveCliente($id_cliente) {
		$this->db->select("
			pc.id,
			pc.nome,
			crpc.exibir
		");
		$this->db->from("clientes_rel_palavras_chaves crpc");
		$this->db->join("palavras_chave pc", "pc.id = crpc.id_palavras_chaves", "inner");
		$this->db->where("crpc.id_clientes = $id_cliente");
		$r = $this->db->get()->result();

		return $r;
	}
	
	/**
	 * Atualiza as palavras chaves escolhida pelo cliente
	 * @param int $id_cliente
	 * @param array $palavras
	 */
	function escolhePalavras($id_cliente, $palavras) {
		$this->db->delete('clientes_rel_palavras_chaves', 'id_clientes = '.$id_cliente);
		if (!empty($palavras)) {
			foreach ($palavras as $id_palavra => $v) {
				$campos[] = "($id_cliente, $id_palavra, $v)";
			}
			$sql = "INSERT INTO clientes_rel_palavras_chaves
					(
					    id_clientes,
					    id_palavras_chaves,
					    exibir
					)
					VALUES ".implode(',', $campos);
			$this->db->query($sql);
			
			return $this->db->affected_rows();
		}
		return 0;
	}

	/**
	 * Apaga um registro
	 * @param int $id
	 */
	function apaga($id) {
		$this->db->delete("clientes_rel_palavras_chaves", "id_palavras_chaves = $id");
		$this->db->delete('descritores', 'id_palavras_chaves = ' . $id);
		return parent::apaga($id);
	}

	/**
	 * Apaga todos as palavras-chave de um cliente
	 * @param int $id_cliente
	 * @return int Linhas afetadas
	 */
	function apagaPorCliente($id_cliente) {
		$this->db->delete("clientes_rel_palavras_chaves", "id_clientes = '$id_cliente'");
		
		return $this->db->affected_rows();
	}
	
}
?>